#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
准备面板数据用于熵权TOPSIS分析
"""
import pandas as pd
import numpy as np

# 读取数据
df_data = pd.read_excel('data/cases/case_10.xlsx', sheet_name='原始矩阵')
df_config = pd.read_excel('data/cases/case_10.xlsx', sheet_name='指标配置')

print("原始数据形状:", df_data.shape)
print("\n数据预览:")
print(df_data.head(10))

# 重命名列为英文（便于Stata处理）
column_mapping = {
    '地区': 'region',
    '年份': 'year',
    '医院个数(X1)': 'hospitals',
    '床位数量(X2)': 'beds',
    '医师人数(X3)': 'doctors',
    '护士人数(X4)': 'nurses',
    '门诊人均费用(X5)': 'outpatient_cost',
    '住院人均费用(X6)': 'inpatient_cost',
    '病床使用率(%)(X7)': 'bed_utilization',
    '总诊疗人次(万)(X8)': 'total_visits',
    '出院人次(万)(X9)': 'discharges'
}

df = df_data.rename(columns=column_mapping)

# 创建地区ID
df['region_id'] = df['region'].str.extract('(\d+)').astype(int)

# 重新排列列
df = df[['region_id', 'region', 'year', 'hospitals', 'beds', 'doctors', 'nurses',
         'outpatient_cost', 'inpatient_cost', 'bed_utilization', 'total_visits', 'discharges']]

print("\n处理后数据:")
print(df.head(10))
print("\n数据统计:")
print(df.describe())

# 保存为CSV（Stata可以读取）
df.to_csv('data/cases/healthcare_panel.csv', index=False, encoding='utf-8-sig')
print("\n✓ 数据已保存到: data/cases/healthcare_panel.csv")

# 保存指标配置
indicator_info = {
    'indicator': ['hospitals', 'beds', 'doctors', 'nurses', 'outpatient_cost', 
                  'inpatient_cost', 'bed_utilization', 'total_visits', 'discharges'],
    'name_cn': ['医院个数', '床位数量', '医师人数', '护士人数', '门诊人均费用',
                '住院人均费用', '病床使用率', '总诊疗人次', '出院人次'],
    'type': ['positive', 'positive', 'positive', 'positive', 'negative',
             'negative', 'positive', 'positive', 'positive']
}
df_indicators = pd.DataFrame(indicator_info)
df_indicators.to_csv('data/cases/indicator_config.csv', index=False, encoding='utf-8-sig')
print("✓ 指标配置已保存到: data/cases/indicator_config.csv")

print("\n数据概况:")
print(f"- 地区数: {df['region_id'].nunique()}")
print(f"- 年份数: {df['year'].nunique()}")
print(f"- 总观测数: {len(df)}")
print(f"- 指标数: {len(indicator_info['indicator'])}")

